(void)HYPERVISOR_multicall(xn_rx_mcl, i+1);
/* Check return status of HYPERVISOR_dom_mem_op(). */
- if (unlikely(xn_rx_mcl[i].args[5] != i))
+ if (unlikely(xn_rx_mcl[i].result != i))
panic("Unable to reduce memory reservation\n");
/* Above is a suitable barrier to ensure backend will see requests. */
for ( i = 0; i < nseg; i++ )
{
- if ( unlikely(mcl[i].args[5] != 0) )
+ if ( unlikely(mcl[i].result != 0) )
{
DPRINTK("invalid buffer -- could not remap it\n");
fast_flush_area(pending_idx, nseg);
netif->stats.tx_packets++;
/* The update_va_mapping() must not fail. */
- if ( unlikely(mcl[0].args[5] != 0) )
+ if ( unlikely(mcl[0].result != 0) )
BUG();
/* Check the reassignment error code. */
status = NETIF_RSP_OKAY;
- if ( unlikely(mcl[1].args[5] != 0) )
+ if ( unlikely(mcl[1].result != 0) )
{
DPRINTK("Failed MMU update transferring to DOM%u\n", netif->domid);
free_mfn(mdata >> PAGE_SHIFT);
while ( dealloc_cons != dp )
{
/* The update_va_mapping() must not fail. */
- if ( unlikely(mcl[0].args[5] != 0) )
+ if ( unlikely(mcl[0].result != 0) )
BUG();
pending_idx = dealloc_ring[MASK_PEND_IDX(dealloc_cons++)];
memcpy(&txreq, &pending_tx_info[pending_idx].req, sizeof(txreq));
/* Check the remap error code. */
- if ( unlikely(mcl[0].args[5] != 0) )
+ if ( unlikely(mcl[0].result != 0) )
{
DPRINTK("Bad page frame\n");
make_tx_response(netif, txreq.id, NETIF_RSP_ERROR);
(void)HYPERVISOR_multicall(rx_mcl, i+1);
/* Check return status of HYPERVISOR_dom_mem_op(). */
- if (unlikely(rx_mcl[i].args[5] != i))
+ if (unlikely(rx_mcl[i].result != i))
panic("Unable to reduce memory reservation\n");
/* Above is a suitable barrier to ensure backend will see requests. */
int j;
for ( j = 0; j < i; j++ )
{
- if ( unlikely(mcl[j].args[5] != 0) )
+ if ( unlikely(mcl[j].result != 0) )
{
printk(KERN_WARNING
"invalid buffer %d -- could not remap it\n", j);
(void)HYPERVISOR_multicall(rx_mcl, nr_pfns+1);
/* Check return status of HYPERVISOR_dom_mem_op(). */
- if ( rx_mcl[nr_pfns].args[5] != nr_pfns )
+ if ( rx_mcl[nr_pfns].result != nr_pfns )
panic("Unable to reduce memory reservation\n");
/* Above is a suitable barrier to ensure backend will see requests. */
(void)HYPERVISOR_multicall(rx_mcl, nr_pfns+1);
/* Check return status of HYPERVISOR_dom_mem_op(). */
- if (rx_mcl[nr_pfns].args[5] != nr_pfns)
+ if (rx_mcl[nr_pfns].result != nr_pfns)
panic("Unable to reduce memory reservation\n");
/* Above is a suitable barrier to ensure backend will see requests. */
OFFSET(MULTICALL_arg2, multicall_entry_t, args[2]);
OFFSET(MULTICALL_arg3, multicall_entry_t, args[3]);
OFFSET(MULTICALL_arg4, multicall_entry_t, args[4]);
- OFFSET(MULTICALL_result, multicall_entry_t, args[5]);
+ OFFSET(MULTICALL_arg5, multicall_entry_t, args[5]);
+ OFFSET(MULTICALL_arg6, multicall_entry_t, args[6]);
+ OFFSET(MULTICALL_result, multicall_entry_t, result);
BLANK();
DEFINE(FIXMAP_apic_base, fix_to_virt(FIX_APIC_BASE));
OFFSET(MULTICALL_arg2, multicall_entry_t, args[2]);
OFFSET(MULTICALL_arg3, multicall_entry_t, args[3]);
OFFSET(MULTICALL_arg4, multicall_entry_t, args[4]);
- OFFSET(MULTICALL_result, multicall_entry_t, args[5]);
+ OFFSET(MULTICALL_arg5, multicall_entry_t, args[5]);
+ OFFSET(MULTICALL_arg6, multicall_entry_t, args[6]);
+ OFFSET(MULTICALL_result, multicall_entry_t, result);
BLANK();
DEFINE(IRQSTAT_shift, LOG_2(sizeof(irq_cpustat_t)));
/* NB. Both the following are 64 bits each. */
typedef unsigned long memory_t; /* Full-sized pointer/address/memory-size. */
-typedef unsigned long cpureg_t; /* Full-sized register. */
typedef struct
{
/* NB. Both the following are 32 bits each. */
typedef unsigned long memory_t; /* Full-sized pointer/address/memory-size. */
-typedef unsigned long cpureg_t; /* Full-sized register. */
/*
* Send an array of these to HYPERVISOR_set_trap_table()
/* NB. Both the following are 64 bits each. */
typedef unsigned long memory_t; /* Full-sized pointer/address/memory-size. */
-typedef unsigned long cpureg_t; /* Full-sized register. */
/*
* Send an array of these to HYPERVISOR_set_trap_table().
#define __HYPERVISOR_set_segment_base 25 /* x86/64 only */
#define __HYPERVISOR_mmuext_op 26
-/*
- * MULTICALLS
- *
- * Multicalls are listed in an array, with each element being a fixed size
- * (BYTES_PER_MULTICALL_ENTRY). Each is of the form (op, arg1, ..., argN)
- * where each element of the tuple is a machine word.
- */
-#define ARGS_PER_MULTICALL_ENTRY 8
-
-
/*
* VIRTUAL INTERRUPTS
*
{
memory_t ptr; /* Machine address of PTE. */
memory_t val; /* New contents of PTE. */
-} PACKED mmu_update_t;
+} mmu_update_t;
/*
* Send an array of these to HYPERVISOR_multicall().
*/
typedef struct
{
- cpureg_t op;
- cpureg_t args[7];
-} PACKED multicall_entry_t;
+ unsigned long op, result;
+ unsigned long args[6];
+} multicall_entry_t;
/* Event channel endpoints per domain. */
#define NR_EVENT_CHANNELS 1024